package com.tcm.entity.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

/**
 * 对战题目更新数据封装
 * @author Guqier
 * @version 1.0
 * @date 2023/9/10 14:31
 */
@Data
public class BattleItemUpdateDto implements Serializable {

    /**
     * 题目ID
     */
    private Long id;

    /**
     * 前驱题目ID，仅案例题存在前驱题目（非必要）
     */
    private Long precursorId;

    /**
     * 是否存在前驱题目，0表示不存在，1表示存在（非请求参数）
     */
    private Integer hasPrecursor;

    /**
     * 组ID，用于区分案例题（非请求参数）
     */
    private Long groupId;

    /**
     * 题目类型，0表示案例题，1表示原文题
     */
    @NotNull
    private Integer type;

    /**
     * 题目题干内容
     */
    @NotBlank
    private String content;

    /**
     * 子题目，用于案例实训的小问
     */
    private String subContent;

    /**
     * 题目难易级别，ts_code主键
     */
    @NotNull
    private Long difficultyId;

    /**
     * 题目关联章节ID，ts_book主键
     */
    @NotNull
    private Long chapterId;

    /**
     * 题目选项
     */
    @NotNull
    private List<Option> options;

    /**
     * 答案，多选题格式(ABCD)，判断(T,F)
     */
    @NotBlank
    private String ans;

    /**
     * 答案解析
     */
    private String describe;

    /**
     * 选项封装类
     */
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Option {

        /**
         * 选项
         */
        private String option;

        /**
         * 选项内容
         */
        private String content;

    }

}
